<?php


/**
 * Notes:
 * PROJECT_NAME : ERP v1.0.0.042823
 * User: 夏鱼儿<397072174@qq.com>
 * Date: 2023/5/31
 * Time: 14:43
 */

namespace app\service\traits\model;

trait SearchAttr
{

    /**
     * 搜索器  名称/账号
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchNameAttr($query, $value, $data): void
    {
        if ($value) $query->where('name', 'like', '%' . $value . '%');
    }

    /**
     * 搜索器 身份
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchIdentityAttr($query, $value, $data): void
    {
        if ($value) $query->where('identity', $value);
    }


    /**
     * 搜索器  名称/账号
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchUserNameAttr($query, $value, $data): void
    {
        if ($value) $query->where('user_name', 'like', '%' . $value . '%');
    }

    /**
     * 搜索器  真名
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchRealNameAttr($query, $value, $data): void
    {
        if ($value) $query->where('real_name', 'like', '%' . $value . '%');
    }

    /**
     * 搜索器  手机号
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchMobileAttr($query, $value, $data): void
    {
        if ($value) $query->where('mobile', 'like', '%' . $value . '%');
    }

    /**
     * 搜索器  商品ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchGoodsIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('goods_id', $value);
    }

    /**
     * 搜索器  第三方ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchSupplierIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('supplier_id', $value);
    }


    /**
     * 搜索器  业务员ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchSalesmanIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('salesman_id', $value);
    }


    /**
     * 搜索器  盘点单ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchWarehouseTakeStockIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('warehouse_take_stock_id', $value);
    }

    /**
     * 搜索器  公司ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchStoreIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('store_id', $value);
    }

    /**
     * 搜索器  盘点单状态
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchStockStatusAttr($query, $value, $data): void
    {
        if ($value) $query->where('stock_status', $value);
    }

    /**
     * 开始时间
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchStartTimeAttr($query, $value, $data): void
    {
        if ($value) $query->whereTime('start_time', 'between', [$value[0], $value[1]]);
    }

    /**
     * 结束时间
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchEndTimeAttr($query, $value, $data): void
    {
        if ($value) $query->whereTime('end_time', 'between', [$value[0], $value[1]]);
    }

    /**
     * 审核时间
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchAuditorTimeAttr($query, $value, $data): void
    {
        if ($value) $query->whereTime('auditor_time', 'between', [$value[0], $value[1]]);
    }

    /**
     * 搜索器 公司ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchCompanyIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('company_id', $value);
    }

    /**
     * 搜索器 公司ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchGoodsCateIdAttr($query, $value, $data): void
    {
        if (!$value) $value = 0;
        $ids = getGoodsCateIds((int)$value);
        if ($ids) $query->whereIn('goods_cate_id', $ids);
    }


    /**
     * 搜索器  仓库ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchWarehouseIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('warehouse_id', $value);
    }

    /**
     * 搜索器  仓区ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchWarehouseAreaIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('warehouse_area_id', $value);
    }


    /**
     * 搜索器  仓位ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchWarehouseStorageIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('warehouse_storage_id', $value);
    }
    /**
     * 搜索器  编号
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchNoAttr($query, $value, $data): void
    {
        if ($value) $query->where('no', 'like', '%' . $value . '%');
    }


    /**
     * 搜索器  状态
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchStatusAttr($query, $value, $data): void
    {
        if ($value) $query->where('status', $value);
    }

    /**
     * 搜索器  状态
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchOrderStatusAttr($query, $value, $data): void
    {
        if ($value) $query->where('order_status', $value);
    }

    /**
     * 搜索器  加盟店用户ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchUserIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('user_id', $value);
    }


    /**
     * 搜索器  type 类型
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchTypeAttr($query, $value, $data): void
    {
        if ($value) $query->where('type', $value);
    }

    /**
     * 搜索器  ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('id', $value);
    }


    /**
     * 搜索器  时间范围
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchCreateTimeAttr($query, $value, $data): void
    {
        if ($value) {
            $value = [
                strtotime(date('Y-m-d',strtotime($value[0])).'00:00:00'),
                strtotime(date('Y-m-d',strtotime($value[1])).'23:59:59'),
            ];
            $query->whereBetweenTime("create_time", $value[0], $value[1]);
        }
    }

    /**
     * 搜索器  时间范围 (生产时间)
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchProductionTimeAttr($query, $value, $data): void
    {
        if ($value) $query->whereBetweenTime("production_time", $value[0], $value[1]);
    }

    /**
     * 搜索器  时间范围 (批次时间)
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchActiveTimeAttr($query, $value, $data): void
    {
        if ($value) $query->whereBetweenTime("active_time", $value[0], $value[1]);
    }


    /**
     * 搜索器  司机ID
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchDeliverDriverIdAttr($query, $value, $data): void
    {
        if ($value) $query->where('deliver_driver_id', $value);
    }


    /**
     * 搜索器  路线ID(是否绑定路线)
     * @param $query
     * @param $value
     * @param $data
     * @return void
     */
    public function searchIsDeliverLineIdAttr($query, $value, $data): void
    {
        if ($value === 0) {
            $query->where('deliver_line_id', '=', 0);
        }
        if ($value) {
            $query->where('deliver_line_id', '>', 0);
        }
    }


}